Skip to content

Merge develop to main#16

Merged
khakers merged 220 commits into
stablefrom
develop
Jul 11, 2026
Merged

Merge develop to main#16
khakers merged 220 commits into
stablefrom
develop

Conversation

@khakers

@khakers khakers commented Jun 28, 2026

Copy link
Copy Markdown
Owner

Merge development branch into main in preparation for 5.0 release and the deprecation of the develop branch in favor of general feature branches

raidensakura and others added 30 commits May 9, 2023 17:52
- Reduce Docker image size
- Migrate requirements.txt to Pipfile
- Remove unused dependencies
- Add a few unnecessary files in .dockerignore
commit 2e32d6e
Merge: 51a023c b21037c
Author: Martin <box152535@gmail.com>
Date:   Sun Apr 9 21:22:08 2023 +0200

    Merge branch 'modmail-dev:master' into master

commit 51a023c
Author: Martin <box152535@gmail.com>
Date:   Mon Apr 3 13:35:56 2023 +0200

    Changelog+Small fixes

commit f5f25b5
Author: Martin <box152535@gmail.com>
Date:   Mon Apr 3 13:10:35 2023 +0200

    confirm_thread_creation Buttons instead of reactions

commit 11e094c
Merge: ebd38d3 e919304
Author: Taku <45324516+Taaku18@users.noreply.github.com>
Date:   Tue Mar 14 05:19:54 2023 -0700

    Merge branch 'master' into master

commit ebd38d3
Author: Taku <45324516+Taaku18@users.noreply.github.com>
Date:   Tue Mar 14 05:18:17 2023 -0700

    Fix indentations

commit b77e435
Author: Martin <box152535@gmail.com>
Date:   Sun Mar 12 17:22:42 2023 +0100

    Reminder Plugin

    Created a reminder plugin
commit 13437cd
Author: baptiste0928 <22115890+baptiste0928@users.noreply.github.com>
Date:   Tue Mar 21 22:29:24 2023 +0100

    Format with black

commit 8a6ecd6
Merge: d9e364e 02250e8
Author: Taku <45324516+Taaku18@users.noreply.github.com>
Date:   Tue Mar 21 13:30:40 2023 -0700

    Merge branch 'development' into feat/guild-icon-size

    Signed-off-by: Taku <45324516+Taaku18@users.noreply.github.com>

commit d9e364e
Author: baptiste0928 <22115890+baptiste0928@users.noreply.github.com>
Date:   Sun Mar 19 20:17:35 2023 +0100

    Update changelog

commit d0bfeb4
Author: baptiste0928 <22115890+baptiste0928@users.noreply.github.com>
Date:   Sun Mar 19 20:06:20 2023 +0100

    Set size for guild icons on embeds
commit cf3444a
Author: Khakers <22665282+khakers@users.noreply.github.com>
Date:   Tue Jan 24 14:13:15 2023 -0800

    Add dm_channel_id field to log entry
khakers and others added 27 commits November 12, 2025 13:23
* Add (truncated) preview to snippets command (modmail-dev#3342)

* Add (truncated) preview to snippets command

* Add old view as option with "compact"

* Fix black formatting

* Fix: Image url regex in thread send method (modmail-dev#3378)

* feat minimum character requirement for thread creation. (modmail-dev#3380)

* update: dpy, snoozing.

This pull request updated discord.py to 2.5.2.

This also brings a new few features.
- snooze
- snoozed
- unsnooze
- clearsnoozed

Aswell as a few new config options.
- max_snooze_time
- snooze_title
- snooze_text
- unsnooze_tex
- unsnooze_notify_channel

Signed-off-by: lorenzo132 <50767078+lorenzo132@users.noreply.github.com>

* remove: unneeded import

Signed-off-by: lorenzo132 <50767078+lorenzo132@users.noreply.github.com>

* Formatting black

Signed-off-by: lorenzo132 <50767078+lorenzo132@users.noreply.github.com>

* fix?: internal messages on restoration

Signed-off-by: lorenzo132 <50767078+lorenzo132@users.noreply.github.com>

* formatting

Signed-off-by: lorenzo132 <50767078+lorenzo132@users.noreply.github.com>

* fix: internal messages.

Signed-off-by: lorenzo132 <50767078+lorenzo132@users.noreply.github.com>

* fix: internals

Signed-off-by: lorenzo132 <50767078+lorenzo132@users.noreply.github.com>

* Update thread.py

Signed-off-by: lorenzo132 <50767078+lorenzo132@users.noreply.github.com>

* fix: use same logkey after restoration

Signed-off-by: lorenzo132 <50767078+lorenzo132@users.noreply.github.com>

* Add files via upload

Signed-off-by: lorenzo132 <50767078+lorenzo132@users.noreply.github.com>

* Update thread.py

Signed-off-by: lorenzo132 <50767078+lorenzo132@users.noreply.github.com>

* Update thread.py

Signed-off-by: lorenzo132 <50767078+lorenzo132@users.noreply.github.com>

* Update thread.py

Signed-off-by: lorenzo132 <50767078+lorenzo132@users.noreply.github.com>

* fix: show who send which internal message.

* Black formatting.

* Update Pipfile

Signed-off-by: lorenzo132 <50767078+lorenzo132@users.noreply.github.com>

* Update Pipfile.lock

Signed-off-by: lorenzo132 <50767078+lorenzo132@users.noreply.github.com>

* fix: unsnooze bug

* feat: CV2

* update: black

* fix: duplicates in logs, notes.

* feat: dpy 2.6.3, forwarded messages, bug fixes.

* Fix jump_url not being displayed

* Update pipfile for new dpy version

* fix: bug in note title/color

* Update snooze arg

* Update Pipfile to include tomli package

Signed-off-by: lorenzo132 <50767078+lorenzo132@users.noreply.github.com>

* auto detect dpy version

Signed-off-by: lorenzo132 <50767078+lorenzo132@users.noreply.github.com>

* Remove crlf terminators

* fix: ignore typing failures (modmail-dev#3389)

* fix: ignore typing failures

Make Modmail keep working when typing is disabled/outage

* fix: only surpress failures

* chore: sync local edits before push

* Lock pipenv

* Fix: closing with timed words/ command in reply. (modmail-dev#3391)

* fix: ignore typing failures

Make Modmail keep working when typing is disabled/outage

* fix: only surpress failures

* chore: sync local edits before push

* Fix: closing with timed words/ command in reply.

* Fix: typing in changelog command.

* Fix: closing with timed words (additional))

* Fix changelog entry for command reply issue

Corrected wording in the changelog entry regarding command inclusion in replies.

Signed-off-by: lorenzo132 <50767078+lorenzo132@users.noreply.github.com>

* Update CHANGELOG for v4.2.0 enhancements

Forwarded messages now display correctly in threads.

Signed-off-by: lorenzo132 <50767078+lorenzo132@users.noreply.github.com>

---------

Signed-off-by: lorenzo132 <50767078+lorenzo132@users.noreply.github.com>

* Remove disutil, undo lowercasing escape seq

* Add back uvloop

* Add config help for snooze configs

Signed-off-by: Taku <45324516+Taaku18@users.noreply.github.com>

* Update sponsors and bmac links

---------

Signed-off-by: lorenzo132 <50767078+lorenzo132@users.noreply.github.com>
Signed-off-by: Taku <45324516+Taaku18@users.noreply.github.com>
Co-authored-by: Sebastian <61157793+sebkuip@users.noreply.github.com>
Co-authored-by: Zallom <Yg75nWkHX7jBHcqRPUbb783c54xSa9+github63384893@gmail.com>
Co-authored-by: lorenzo132 <50767078+lorenzo132@users.noreply.github.com>
Co-authored-by: “lorenzo132” <lhoorn4@gmail.com>
Co-authored-by: Martin <box152535@gmail.com>

(cherry picked from commit 21f4766)
The logs command can be used anywhere again.

Signed-off-by: lorenzo132 <50767078+lorenzo132@users.noreply.github.com>
(cherry picked from commit 829a364)
* Add (truncated) preview to snippets command (modmail-dev#3342)

* Add (truncated) preview to snippets command

* Add old view as option with "compact"

* Fix black formatting

* Fix: Image url regex in thread send method (modmail-dev#3378)

* feat minimum character requirement for thread creation. (modmail-dev#3380)

* update: dpy, snoozing.

This pull request updated discord.py to 2.5.2.

This also brings a new few features.
- snooze
- snoozed
- unsnooze
- clearsnoozed

Aswell as a few new config options.
- max_snooze_time
- snooze_title
- snooze_text
- unsnooze_tex
- unsnooze_notify_channel

Signed-off-by: lorenzo132 <50767078+lorenzo132@users.noreply.github.com>

* remove: unneeded import

Signed-off-by: lorenzo132 <50767078+lorenzo132@users.noreply.github.com>

* Formatting black

Signed-off-by: lorenzo132 <50767078+lorenzo132@users.noreply.github.com>

* fix?: internal messages on restoration

Signed-off-by: lorenzo132 <50767078+lorenzo132@users.noreply.github.com>

* formatting

Signed-off-by: lorenzo132 <50767078+lorenzo132@users.noreply.github.com>

* fix: internal messages.

Signed-off-by: lorenzo132 <50767078+lorenzo132@users.noreply.github.com>

* fix: internals

Signed-off-by: lorenzo132 <50767078+lorenzo132@users.noreply.github.com>

* Update thread.py

Signed-off-by: lorenzo132 <50767078+lorenzo132@users.noreply.github.com>

* fix: use same logkey after restoration

Signed-off-by: lorenzo132 <50767078+lorenzo132@users.noreply.github.com>

* Add files via upload

Signed-off-by: lorenzo132 <50767078+lorenzo132@users.noreply.github.com>

* Update thread.py

Signed-off-by: lorenzo132 <50767078+lorenzo132@users.noreply.github.com>

* Update thread.py

Signed-off-by: lorenzo132 <50767078+lorenzo132@users.noreply.github.com>

* Update thread.py

Signed-off-by: lorenzo132 <50767078+lorenzo132@users.noreply.github.com>

* fix: show who send which internal message.

* Black formatting.

* Update Pipfile

Signed-off-by: lorenzo132 <50767078+lorenzo132@users.noreply.github.com>

* Update Pipfile.lock

Signed-off-by: lorenzo132 <50767078+lorenzo132@users.noreply.github.com>

* fix: unsnooze bug

* feat: CV2

* update: black

* fix: duplicates in logs, notes.

* feat: dpy 2.6.3, forwarded messages, bug fixes.

* Fix jump_url not being displayed

* Update pipfile for new dpy version

* fix: bug in note title/color

* Update snooze arg

* Update Pipfile to include tomli package

Signed-off-by: lorenzo132 <50767078+lorenzo132@users.noreply.github.com>

* auto detect dpy version

Signed-off-by: lorenzo132 <50767078+lorenzo132@users.noreply.github.com>

* Remove crlf terminators

* fix: ignore typing failures

Make Modmail keep working when typing is disabled/outage

* fix: only surpress failures

* chore: sync local edits before push

* fix: ignore typing failures (modmail-dev#3389)

* fix: ignore typing failures

Make Modmail keep working when typing is disabled/outage

* fix: only surpress failures

* chore: sync local edits before push

* Lock pipenv

* Fix: closing with timed words/ command in reply.

* Fix: typing in changelog command.

* Fix: closing with timed words (additional))

* Fix changelog entry for command reply issue

Corrected wording in the changelog entry regarding command inclusion in replies.

Signed-off-by: lorenzo132 <50767078+lorenzo132@users.noreply.github.com>

* Update CHANGELOG for v4.2.0 enhancements

Forwarded messages now display correctly in threads.

Signed-off-by: lorenzo132 <50767078+lorenzo132@users.noreply.github.com>

* Fix: closing with timed words/ command in reply. (modmail-dev#3391)

* fix: ignore typing failures

Make Modmail keep working when typing is disabled/outage

* fix: only surpress failures

* chore: sync local edits before push

* Fix: closing with timed words/ command in reply.

* Fix: typing in changelog command.

* Fix: closing with timed words (additional))

* Fix changelog entry for command reply issue

Corrected wording in the changelog entry regarding command inclusion in replies.

Signed-off-by: lorenzo132 <50767078+lorenzo132@users.noreply.github.com>

* Update CHANGELOG for v4.2.0 enhancements

Forwarded messages now display correctly in threads.

Signed-off-by: lorenzo132 <50767078+lorenzo132@users.noreply.github.com>

---------

Signed-off-by: lorenzo132 <50767078+lorenzo132@users.noreply.github.com>

* Remove disutil, undo lowercasing escape seq

* Add back uvloop

* Add config help for snooze configs

Signed-off-by: Taku <45324516+Taaku18@users.noreply.github.com>

* fix; raceconditions, thread duplication on unsnooze, message queue for accurasy on high load

* Update package versions in requirements.txt

Signed-off-by: lorenzo132 <50767078+lorenzo132@users.noreply.github.com>

* snooze(move): auto-unsnooze on reply/any mod message; enforce hidden permissions on auto-created Snoozed Threads and sync perms on move; restore original overwrites on unsnooze; add capacity guard and config docs

* unsnooze: suppress mentions during restore (AllowedMentions.none on replay and notifications)

* Remove base64 snooze/unsnooze logic, fix notification crash, clean up replay logic

* fix: escape mentions on unsnooze

* Fix: Only create log URL button if valid, and robust channel restore for snooze

* black formatting

* Unsnooze: prefix username (user_id) for plain-text replay messages

* feat: command queue during unsnooze process.

feat(config): `unsnooze_history_limit`: Limits the number of messages replayed when unsnoozing (genesis message and notes are always shown).

* fix: contact while snooze returned as invalid channel

* Update thread.py

* fix: snooze timing

* change: rename default snooze time config

* fix: parsing

* fix: cache for snooze timer

* fix: Properly accessing nested data

* rename: default_snooze_time -> snooze_default_duration

* improve unsnooze notify

* fix: id extraction for clean database.

* improve: support for user-friendly time input for snooze_default_duration

* reflect config help snooze_default_duration for userfriendly time

* fix: anonreply showing None

This fixes a bug where, if no `anon_username` is set and the moderator has no roles, the `anon_username` is not showing as `None` anymore, and will show as intended.

The logic now works as follows:
- If a config anon_username is set → use it
- Else, if a mod_tag is set → use it
- Else, if the moderator has a top role → use that
- Else → use "Anonymous"

* black formatting

* feat: thread creation menu

Credits to Sebkuip(https://github.com/sebkuip) for the original idea and populair plugin.(advanced-menu)

This now is a core feature.

* Update requirements.txt

* fixes

This solves:
- `config get`: invalid form body
- restores functionality after menu timeout.

* feat: thread_creation_menu_precreate_channel

adds a new: thread_creation_menu_precreate_channel

to create the threads, even when nothing is selected yet.

* core

Fully merged `threadmenu config` into the main bot’s config system.

Added threadmenu embed customization capability.

* Change thread_creation_menu config

Moves thread_creation_menu_options, thread_creation_menu_submenus and thread_creation_menu_enabled to the private config keys to avoid changes via ?config set as they can be changed via ?threadmenu

* Change Option Description/Emoji

Changes the description and emoji making it possible to be None (optional)

* fix: disable menu after closure

* feats/fixes

configs added:
thread_creation_send_dm_embed

fix:
snooze while no option was selected, after snoozing selecting option first errored. This is now solved

* forgot to add help

* rely on config for precreating. fix error with unknown channels

* feat: large images in threadmenu embed

* feat: threadmenu reset

* cleanup

* codereviews response. Formatting (ruff)

* log instead of pass on exception

* format

* higher delays

* black formatting, smoothen menu closure

* smoothen which selecetion was made

* solves the command from showing in the replies in rare cases

* Update CHANGELOG.md

* Update sponsors and bmac links

* fix: typeerror

* fix: Remove thread-only restriction from logs command

The logs command can be used anywhere again.

* Remove commands from being saved in DB.

* fix: correct guildpfp with sepserver setup - made by martin

This PR fixes displaying the wrong guild icon in the thread_creation_response embed.
When servers having a seperate server setup, the guild icon from the main guild should be displayed instead of the inbox guild.

* fix: robust channel deletion handling, skip audit log attribution if permission is missing

* update: use current reqs.txt as masterbranch

* sync: pip&pip lock with master

* Patch Thread Menu Editing Crash

* bump version

* Missing a newline

Signed-off-by: Taku <45324516+Taaku18@users.noreply.github.com>

* Missing a newline

Signed-off-by: Taku <45324516+Taaku18@users.noreply.github.com>

* Apply suggestion from @Copilot

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Taku <45324516+Taaku18@users.noreply.github.com>

* Apply suggestion from @Copilot

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Taku <45324516+Taaku18@users.noreply.github.com>

---------

Signed-off-by: lorenzo132 <50767078+lorenzo132@users.noreply.github.com>
Signed-off-by: Taku <45324516+Taaku18@users.noreply.github.com>
Co-authored-by: Sebastian <61157793+sebkuip@users.noreply.github.com>
Co-authored-by: Zallom <Yg75nWkHX7jBHcqRPUbb783c54xSa9+github63384893@gmail.com>
Co-authored-by: Martin <box152535@gmail.com>
Co-authored-by: Taku <45324516+Taaku18@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

(cherry picked from commit 124669d)
This adds two commands for renaming snippets and aliases for easier name editing.
* Updates Plugin Wiki Link

As the github repo wiki got moved to the own docs page this link needs to be updated.
I will update it accordingly if docs may change later.

* Fix @local/name doc

* Chnaged Plugin Help Link for modmail-dev#3322

Plugin Help link got moved again into a new page of the docs.

---------

Co-authored-by: Sebastian <61157793+sebkuip@users.noreply.github.com>
…dmail-dev#3404)

* Threadmenu now supports submenus

* Fix a small issue with path not resetting after main menu.

* Fix copilot suggestions

* Black formatting

* Fix undeclared vars

* threadmenu: submenu navigation fixes

Signed-off-by: lorenzo132 <50767078+lorenzo132@users.noreply.github.com>

* threadmenu: submenu navigation fixes

Refactor thread creation menu handling to improve path management and submenu navigation.

Signed-off-by: lorenzo132 <50767078+lorenzo132@users.noreply.github.com>

* Fix formatting according to black

---------

Signed-off-by: lorenzo132 <50767078+lorenzo132@users.noreply.github.com>
Co-authored-by: lorenzo132 <50767078+lorenzo132@users.noreply.github.com>
…-dev#3412)

* improvements changelog.md

* remove advancedmenu plugin

* fix: hide privatekey from changelog

This is for internal use only.

* black formatting

* feat: dispatch event for snoozing/unsnoozing.

This allows plugin developers to create feature on snoozing/unsnoozing.

* bump pipfile

* Update Pipfile.lock

* black formatting

* sync with pipfile.

---------

Co-authored-by: Sebastian <61157793+sebkuip@users.noreply.github.com>
* Add threadmenu toggle notice

Adds a notice to the `threadmenu toggle` command. It gets displayed if the advancedmenu plugin is part of the bot and checks if its enabled at the same time. useful for users because both would interrupt eachother.

* Threadmenu toggle notice link

Adds a link to the migration guide for the legacy plugin.
* Fixes thread_auto_close execution when disabled.

This fixes the issue modmail-dev#3290 which caused threads to be auto-closed even if `thread_auto_close` has been disabled.

There was also an issue that closed the thread when the user has responded to mods. The thread should stay open and only auto close when the staff has replied back.

* fix: prevent autoclosing when close has been cancelled.

This solves the thread from autoclosing if the closure has been cancelled earlier in a thread.

* fix: AttributeError / lower mongo calls.

I had added a small bugfix aswell for pagination when an invalid config var was given.

This happened to occur upon removing the `thread_auto_close` config.

---------

Co-authored-by: lorenzo132 <lhoorn4@gmail.com>
Co-authored-by: lorenzo132 <50767078+lorenzo132@users.noreply.github.com>
* support to edit and delete plain reply messages

* fix linting

* fix: not rely on mod_color as originally was made.

This will avoid crashes when the mod_color get changed.

* fix: typeerror / refactor

* fix linting

* silent unneeded noise
Improves type hints
Fix insufficiently specific databse queries updating incorrect entries
use mongodb timestamps instead of strings
Fix logging issues
use webhooks to send messages so they appear to come from the user that
originally sent them
resolves #13 where log keys were not set upon a Thread object being created for an existing thread
Remove debug logging of the log variable.
Add ignore_prefix config option
When reply_without_command is enabled, a message starting with this character (or string) will not be sent as a reply
@khakers khakers added this to the v5.0 release milestone Jun 28, 2026
Updated README to reflect changes in project status and installation instructions.
@khakers
khakers merged commit 5b415ee into stable Jul 11, 2026
0 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants